ในโลกของการเร่งความเร็วฮาร์ดแวร์สำหรับการเรียนรู้เชิงลึก นักพัฒนาหลายรายมักจะเผชิญกับ ช่องว่างของนินจา: ความแตกต่างอย่างมากในประสิทธิภาพระหว่างโค้ดระดับสูงแบบพาيثอน (พายทอร์ช/เทนเซอร์ฟโลว์) กับเคอร์เนลแบบต่ำระดับที่ถูกปรับแต่งด้วยมือโดยใช้แคดีเอ (CUDA) ทริทอน คือภาษาและเครื่องแปลเปิดเผยที่ออกแบบมาเพื่อเติมช่องว่างนี้
1. สเปกตรัมของผลิตภาพกับประสิทธิภาพ
เดิมที คุณมีทางเลือกสองอย่าง: ผลิตภาพสูง (พายทอร์ช) ซึ่งเขียนได้ง่าย แต่มักไม่เหมาะสมกับการทำงานเฉพาะเจาะจง หรือ ประสิทธิภาพสูง (แคดีเอ) ซึ่งต้องอาศัยความรู้เชิงผู้เชี่ยวชาญเกี่ยวกับสถาปัตยกรรมหน่วยประมวลผลกราฟิก (GPU) การจัดการหน่วยความจำร่วม และการซิงค์เธรด
2. โมเดลการเขียนโปรแกรมแบบแบ่งส่วน
ต่างจากแคดีเอ ซึ่งดำเนินการบน โมเดลที่เน้นเธรด โมเดล (ที่คุณเขียนโค้ดสำหรับเธรดเดียว) ทริทอนใช้โมเดล โมเดลที่เน้นส่วน (ทีล) โมเดล คุณเขียนโปรแกรมที่ทำงานกับบล็อก (ทีล) ของข้อมูล คอมไพเลอร์จะจัดการอัตโนมัติ:
- การรวมหน่วยความจำ (Memory Coalescing): การปรับให้การเข้าถึงหน่วยความจำแบบทั่วไปมีประสิทธิภาพสูงสุด
- หน่วยความจำร่วม (Shared Memory): การจัดการแคชหน่วยความจำภายใน (SRAM) ที่รวดเร็ว
- การจัดสรรงานให้หน่วยประมวลผล (SM Scheduling): การกระจายงานไปยังหน่วยประมวลผลแบบสตรีมมิ่ง (Streaming Multiprocessors)
3. ทำไมทริทอนจึงสำคัญ
ทริทอนทำให้นักวิจัยสามารถเขียนเคอร์เนลเฉพาะ (เช่น แฟลชแอตเทนชัน) ด้วยภาษาพาธอน โดยไม่ต้องเสียสมรรถนะที่จำเป็นต่อการฝึกโมเดลขนาดใหญ่ มันช่วยลดความซับซ้อนของการซิงโครไนซ์ด้วยตนเองและการจัดวางหน่วยความจำ